home *** CD-ROM | disk | FTP | other *** search
Wrap
(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=L. Francisco Title=FilmUP Description=Get movie info from FilmUP.it Site=http://www.filmup.com Language=IT Version=1.0.1 - 02.02.2005 Requires=3.5.0 Comments=**Changes**|Pivello: query URL changed|Zandal: sistemato puntamento a COMMENTS|Pivello: Film site URL selectable instead of FilmUp page URL|dinolib: adapted to v.3.5.0 and little bugfix License=* The source code of the script can be used in |* another program only if full credits to |* script author and a link to Ant Movie Catalog |* website are given in the About box or in |* the documentation of the program | GetInfo=1 [Options] AlternateURL=0|0|0=Use the FilmUP web site for FieldURL|1=Try to use ufficial movie web site for FieldURL ***************************************************) program FilmUP; var MovieName: string; TheMovieAddress: string; function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer; var i: Integer; begin result := -1; if StartAt < 0 then StartAt := 0; for i := StartAt to List.Count-1 do if Pos(Pattern, List.GetString(i)) <> 0 then begin result := i; Break; end; end; procedure AnalyzePage(Address: string); var Page: TStringList; LineNr: integer; BeginPos: integer; begin Page := TStringList.Create; Page.Text := GetPage(Address); LineNr := FindLine('<title>FilmUP - Cerca: ', Page, 0); if LineNr = -1 then begin SetField(fieldURL, Address); AnalyzeMoviePage(Page); end else begin PickTreeClear; AddMoviesTitles(Page); if TheMovieAddress='' then begin if PickTreeExec(Address) then AnalyzePage(Address); end else begin SetField(fieldURL, TheMovieAddress); Page.Text := GetPage(TheMovieAddress); AnalyzeMoviePage(Page); end; end; Page.Free; end; procedure AnalyzeMoviePage(Page: TStringList); var Line: string; NomeHtml: string; LineNr,PrevLineNr: Integer; BeginPos, EndPos: Integer; Field: integer; begin LineNr := FindLine('<font face="arial, helvetica" size="3"><b>', Page, 0); if LineNr > -1 then begin //Translated Title Line := Page.GetString(LineNr); HTMLRemoveTags(Line); SetField(fieldTranslatedTitle, Line); repeat //Look for next info repeat LineNr := LineNr + 1; Line := Page.GetString(LineNr); HTMLRemoveTags(Line); until Line<>''; //Look for type of line if Line = 'Titolo originale: ' then Field := fieldOriginalTitle else if Line = 'Regia: ' then Field := fieldDirector else if Line = 'Produzione: ' then Field := fieldProducer else if Line = 'Nazione: ' then Field := fieldCountry else if Line = 'Genere: ' then Field := fieldCategory else if Line = 'Anno: ' then Field := fieldYear else if Line = 'Durata: ' then Field := fieldLength //Special case: get number only else if Line = 'Sito ufficiale: ' then Field := fieldURL else if Line = 'Cast: ' then Field := fieldActors else if Line = 'Trama:' then Field := fieldDescription else Field := 0; // I have to add this test, for sometimes the description // is on the same line as the tag 'Trama' if (copy(Line,1,6)='Trama:') and (length(Line)>6) then begin Field := fieldDescription; Delete(Line,1,6); HTMLDecode(Line); end else begin //Get values LineNr := LineNr + 1; Line := Page.GetString(LineNr); HTMLRemoveTags(Line); HTMLDecode(Line); //Special case: Length if Field = fieldLength then Line := copy(Line,1,length(Line)-1); end; //Alternative URL case if (field = fieldURL) then begin if (Length(Line) = 0) or (GetOption('AlternateURL')=0) then // if WEB url missing or explicitly requested... Line := GetField(fieldURL) // ...restore FilmUp URL else Line := 'http://'+Line; end; if Field<>0 then SetField(Field,Line); until Field=fieldDescription; end; PrevLineNr := LineNr; //Comments LineNr := FindLine('">Recensione</a>', Page, PrevLineNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); if Pos('DVD', Line) <> 0 then Delete(Line,1,pos('DVD',Line)); if Pos('Scheda', Line) <> 0 then Delete(Line,1,pos('Scheda',Line)); Delete(Line,1,pos('<a href="',Line)+8); NomeHtml :=Copy(Line,1,pos('"',Line)-1); if (copy(NomeHtml,1,1)<>'/') then begin NomeHtml := '/' + NomeHtml; end; GetComments('http://www.filmup.com'+NomeHtml); PrevLineNr := LineNr; end; //Rating LineNr := FindLine('">Opinioni</a>', Page, PrevLineNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Delete(Line,1,pos('Recensione',Line)); Delete(Line,1,pos('<a href="',Line)+8); Line := GetLineFromOtherPage(Copy(Line,1,pos('"',Line)-1),'</b> - <img src="/img/star/'); if Line <> '' then begin Line := Copy(Line,1,pos('</b> - <img src="/img/star/',Line)-1); if pos('.',Line)>0 then Line := Copy(Line,1,pos('.',Line)-1); SetField(fieldRating,Line); end; PrevLineNr := LineNr; end; //Picture LineNr := FindLine('<a href="posters/locp/', Page, PrevLineNr); if LineNr = -1 then begin LineNr := FindLine('<img src="locand/', Page, PrevLineNr); if LineNr > -1 then begin Line := Page.GetString(LineNr); Delete(Line,1,pos('<img src="locand/', Line)+9); GetPicture('http://www.filmup.com/'+Copy(Line,1,pos('"',Line)-1)); end; end else begin Line := Page.GetString(LineNr); Delete(Line,1,pos('<a href="posters/locp/',Line)+8); Line := GetLineFromOtherPage('http://www.filmup.com/'+Copy(Line,1,pos('"',Line)-1),'<img src="../loc/500/'); if Line <> '' then begin Delete(Line,1,pos('<img src="../',Line)+12); GetPicture('http://www.filmup.com/posters/'+Copy(Line,1,pos('"',Line)-1)); end; end; //DisplayResults; end; function GetLineFromOtherPage(address: string; hint: string): string; var Page: TStringList; LineNr: integer; begin Page := TStringList.Create; Page.Text := GetPage(Address); LineNr := FindLine(hint, Page, 0); if LineNr > -1 then result := Page.GetString(LineNr); Page.Free; end; procedure GetComments(address: string); var Page: TStringList; BeginLine: integer; EndLine: integer; i: integer; Line, Comments: string; begin Page := TStringList.Create; Page.Text := GetPage(Address); BeginLine := FindLine('RECENSIONI', Page, 0); BeginLine := FindLine('<font face="arial,helvetica" size="2"><b>', Page, BeginLine); EndLine := FindLine('<a href="opinioni.htm">Scrivi la tua recensione!</a></font><br><br>', Page, BeginLine); for i:= BeginLine+1 to EndLine-1 do begin Line := Page.GetString(i); Line := StringReplace(Line, '<br>', #13#10); Line := StringReplace(Line, #13#10#32, #13#10); HTMLRemoveTags(Line); HTMLDecode(Line); Comments := Comments + Line; end; SetField(fieldComments, Comments); Page.Free; end; procedure AddMoviesTitles(Page: TStringList); var LineNr: Integer; Line: string; MovieTitle, MovieAddress: string; BeginPos, EndPos: Integer; begin LineNr := 0; LineNr := FindLine('FilmUP - Scheda:',Page,LineNr); while LineNr > -1 do begin Line := Page.GetString(LineNr); BeginPos := pos('<a href="',Line)+9; EndPos := pos('" TARGET="_blank"><b>FilmUP - Scheda: ',Line); MovieAddress := copy(Line,BeginPos,EndPos-BeginPos); Delete(Line,1,EndPos); BeginPos := pos('Scheda: ',Line)+8; EndPos := pos('</a>',Line); MovieTitle := copy(Line,BeginPos,EndPos-BeginPos); HTMLRemoveTags(MovieTitle); HTMLDecode(Movietitle); LineNr := FindLine('FilmUP - Scheda:',Page,LineNr+1); PickTreeAdd(MovieTitle, MovieAddress); if TheMovieAddress='*' then TheMovieAddress := MovieAddress else TheMovieAddress := ''; end; LineNr := FindLine('Successivo',Page,LineNr); Line := Page.GetString(LineNr); BeginPos := pos('HREF',Line); if BeginPos>0 then begin Delete(Line,1,BeginPos + 5); EndPos := pos('"',Line); MovieAddress := copy(Line,1,EndPos-1); PickTreeMoreLink('http://www.filmup.com'+MovieAddress); end; if TheMovieAddress='*' then TheMovieAddress := ''; end; // ----------------------------- // Questo Φ il main dello script // ----------------------------- begin if CheckVersion(3,5,0) then begin TheMovieAddress := '*'; MovieName := GetField(fieldOriginalTitle); if MovieName = '' then MovieName := GetField(fieldTranslatedTitle); if Input('FilmUP Import', 'Digita il titolo del film:', MovieName) then begin AnalyzePage('http://www.filmup.com/cgi-bin/search.cgi?q='+UrlEncode(MovieName)+'&ul=%25%2Fsc_%25'); end; end else ShowMessage('Questo script richiede una versione pi∙ nuova di Ant Movie Catalog (almeno la versione 3.5.0)'); end.